package thread;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 74646
 * Date: 2022-04-24
 * Time: 8:25
 */
public class TestDemo8 {
    /**
     *  设置标志位（isQuit）默认值为 false，
     *  每次执行具体任务时先判断中断标志位是否为 true，
     *  如果是 true 就结束线程，如果是 false 就继续执行。
     */
    public static boolean isQuit = false;
    public static void main(String[] args) {
        // 设置一个标志位，使线程中断
        Thread t = new Thread(()->{
        while (!isQuit){
            System.out.println("hello Thread");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        });
        t.start();


        //  只要将 isQuit 设置为 true，循环就会终止，进一步的 run 就执行完了(线程就会执行结束)
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        // 因为多个线程共用同一块虚拟地址空间，所以 main 线程修改的 isQuit 和 t 线程判定的 isQuit 是同一个值
        isQuit = true;
        System.out.println("终止 t 线程");
    }
}
